class Solution(object):

    def longestConsecutive(self, nums):
        """
        Solution Method
        算法：集合
        思路：
            其实题解的思路挺朴素的，就是将nums转化为集合，然后使得查找时间退化为O1
                只在nums中对每个num做序列起始位置的情况进行查找，然后用while一直从起始位置开始向后探索，
            其实对比于下面我的方法，这样做最起码避免了我的那种一个序列中每个位置都要计算的问题，只从开头进行
            探索，会快很多
        """
        num_set = set(nums)# 排好序
        ans = 0
        for num in nums:
            if num - 1 in num_set:
                # 从每一段连续序列中最小的一个开始计算
                continue
            curr = num + 1
            curr_longest = 1
            while curr in num_set:
                curr_longest += 1
                curr += 1
            ans = max(ans, curr_longest)
        return ans
